package cn.ztc.tool.enums;

import java.util.List;
import java.util.ArrayList;

/**
 * 可重复的字段
 * <p>子类必须实现{@link cn.ztc.tool.enums.BaseEnumInterface#getValue()}方法</p>
 *
 * @param <E> 枚举类型
 * @param <V> 字段类型
 * @author 张天赐
 */
public interface RepeatableField<E extends Enum<E>, V extends Comparable<V>> extends BaseEnumInterface<E, V> {

    /**
     * 获取匹配项
     *
     * @param value 字段值
     * @return 匹配项
     */
    default List<E> getMatchItems(V value) {
        List<E> result = new ArrayList<>(0);
        for (E e : getActualTypeArgument().getEnumConstants()) {
            if (getValue().compareTo(value) == 0) {result.add(e);}
        }
        return result;
    }
}
